import tkinter as tk
from tkinter import ttk
from app.playlist_manager import PlaylistManager
from app.playlist.playlist_view import PlaylistView
from app.songlib.songlib_view import SongLibraryView
from app.settings.settings_window import SettingsWindow


class MainWindow:
    """主窗口类，负责UI界面的创建和管理"""
    
    def __init__(self, root):
        """初始化主窗口"""
        self.root = root
        self.root.title("Songar")
        self.root.geometry("1500x600")
        
        # 创建全局菜单栏
        self.create_global_menu()
        
        # 创建歌单管理器实例
        self.playlist_manager = PlaylistManager()
        
        # 创建界面组件
        self.create_widgets()
        
    def create_global_menu(self):
        """创建全局菜单栏"""
        # 创建菜单栏
        self.menu_bar = tk.Menu(self.root)
        
        # 文件菜单
        self.file_menu = tk.Menu(self.menu_bar, tearoff=0)
        self.file_menu.add_command(label="设置", command=self.open_settings)
        self.menu_bar.add_cascade(label="文件", menu=self.file_menu)
        
        # 设置菜单栏
        self.root.config(menu=self.menu_bar)
        
    def open_settings(self):
        """打开设置窗口"""
        SettingsWindow(self.root)
    
    def create_widgets(self):
        """创建所有UI组件"""
        # 创建主框架
        main_frame = ttk.Frame(self.root, padding="10")
        main_frame.pack(fill=tk.BOTH, expand=True)
        
        # 创建标签页控件
        self.notebook = ttk.Notebook(main_frame)
        self.notebook.pack(fill=tk.BOTH, expand=True)
        
        # 创建歌曲库标签页（左侧）
        self.library_frame = ttk.Frame(self.notebook)
        self.notebook.add(self.library_frame, text="歌曲库")
        self.song_library_view = SongLibraryView(self.library_frame)
        self.song_library_view.set_root(self.root)
        
        # 创建歌单标签页（右侧）
        self.playlist_frame = ttk.Frame(self.notebook)
        self.notebook.add(self.playlist_frame, text="歌单")
        
        # 创建歌单视图实例
        self.playlist_view = PlaylistView(self.playlist_frame, self.playlist_manager)
        self.playlist_view.set_root(self.root)
        
        # 默认显示歌曲库标签页
        self.notebook.select(self.library_frame)